//
//  LoginController.swift
//  AddressBook
//
//  Created by admin on 16/1/20.
//  Copyright © 2016年 jin. All rights reserved.
//

import UIKit

class LoginController: UIViewController {
    @IBOutlet weak var userName: UITextField!
    @IBOutlet weak var password: UITextField!
    @IBOutlet weak var loginButton: UIButton!
    @IBOutlet weak var rememberPassword: UISwitch!
    @IBOutlet weak var autoLogin: UISwitch!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    // 文本框改变的时候修改登录按钮的可见性
    @IBAction func checkUserInfo() {
        if(userName.text! == "" || password.text! == "")
        {
            loginButton.enabled = false
        }
        else
        {
            loginButton.enabled = true
        }
    }
    // 登录
    @IBAction func loginAction(sender: AnyObject) {
        let progress = MBProgressHUD(view: self.view)
        self.view.addSubview(progress)
        progress.dimBackground = true
        progress.labelText = "正在登录...."
        progress.show(true)
        self.view.endEditing(true)
        
        //这里设置下延时执行，之前没用过的一种方式，这个参数有一些特别，而且没有提示。。。。记录下
        let minseconds = 1 * Double(NSEC_PER_SEC)
        let dtime = dispatch_time(DISPATCH_TIME_NOW, Int64(minseconds))
        dispatch_after(dtime, dispatch_get_main_queue(), { () -> Void in
            progress.hide(true)
            if(self.userName.text! == "jin" && self.password.text! == "jin")
            {
                
                // 进入下个控制器,以segue的方式跳转
                self.performSegueWithIdentifier("AddressBook", sender: nil)
                let userDefault = NSUserDefaults.standardUserDefaults()
                // 记录用户偏好
                userDefault.setBool(self.rememberPassword.on, forKey: "rememberPassword")
                userDefault.setBool(self.autoLogin.on, forKey: "autoLogin")
                userDefault.synchronize()
                // 如果选择了记住密码就记住密码
                if self.rememberPassword.on
                {
                    self.savePasssword()
                }
                
            }
            else
            {
                let hud = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
                hud.mode = MBProgressHUDMode.Text
                hud.labelText = "登录失败，请重试。。。"
                hud.hide(true, afterDelay: 2)
            }
        })
    }
    // 保存密码到文件
    func savePasssword()
    {
        // 这里保存的方式是直接使用的数据类型自带的写文件方法
        let userInfo = NSMutableDictionary()
        userInfo.setValue(self.userName.text, forKey: "userName")
        userInfo.setValue(self.password.text, forKey: "password")
        userInfo.writeToFile(userInfoPath, atomically: true)
    }
    // 自动登录时勾选记住密码
    @IBAction func autolLoginAction(sender: AnyObject) {
        self.rememberPassword.setOn(self.autoLogin.on ? self.autoLogin.on : self.rememberPassword.on, animated: true)
    }
    @IBAction func rememberChange(sender: AnyObject) {
        self.autoLogin.setOn(self.rememberPassword.on ? self.autoLogin.on : self.rememberPassword.on, animated: true)
    }
    override func viewWillAppear(animated: Bool) {
        // 从文件中读取保存的用户信息
        let userInfo = NSDictionary(contentsOfFile: userInfoPath)
        // 给控件赋值
        self.userName.text = (userInfo?["userName"] != nil) ? (userInfo?["userName"] as! String) : ""
        self.password.text = (userInfo?["password"] != nil) ? (userInfo?["password"] as! String) : ""
        // 检查用户框的信息，用以开启登录按钮可用性
        checkUserInfo()
        // 获得用户偏好设置，
        let userDefault = NSUserDefaults.standardUserDefaults()
        // 设置偏好设置按钮的状态
        self.rememberPassword.on = userDefault.boolForKey("rememberPassword")
        self.autoLogin.on = userDefault.boolForKey("autoLogin")
        // 检查状态，符合则自动登录
        if self.autoLogin.on && loginButton.enabled
        {
            self.loginAction(self)
        }
    }
    // 转向下个控制器的时候会调用这个方法，
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        super.prepareForSegue(segue, sender: sender)
        // 源控制器
//        print(segue.sourceViewController)
        // 目标控制器
//        print(segue.destinationViewController)
        if(segue.destinationViewController is AddressBookController)
        {
            // 设置控制器的标题
            segue.destinationViewController.title = self.userName.text
            segue.destinationViewController.navigationItem.title = self.userName.text
        }
    }
    
}
